package com.adk.backend.mapper;

import com.adk.backend.entity.LxAdminFile;
import com.adk.backend.entity.LxAdminFlag;
import com.adk.backend.entity.LxAdminGroup;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 权限Mapper接口
 */
@Mapper
public interface PermissionMapper {
    
    /**
     * 根据用户组ID查询用户组
     */
    LxAdminGroup selectGroupById(@Param("groupId") Integer groupId);
    
    /**
     * 查询所有菜单（文件）
     */
    List<LxAdminFile> selectAllFiles();
    
    /**
     * 根据文件ID列表查询菜单
     */
    List<LxAdminFile> selectFilesByIds(@Param("fileIds") List<Integer> fileIds);
    
    /**
     * 查询所有权限标志
     */
    List<LxAdminFlag> selectAllFlags();
    
    /**
     * 根据权限ID列表查询权限标志
     */
    List<LxAdminFlag> selectFlagsByIds(@Param("flagIds") List<Integer> flagIds);
    
    /**
     * 根据文件ID查询权限标志
     */
    List<LxAdminFlag> selectFlagsByFileId(@Param("fileId") Integer fileId);
    
    /**
     * 根据文件ID和权限ID列表查询权限标志（用于按文件分组查询flags）
     */
    List<LxAdminFlag> selectFlagsByFileIdAndFlagIds(@Param("fileId") Integer fileId, @Param("flagIds") List<Integer> flagIds);
    
    /**
     * 根据权限标识查询权限标志
     */
    LxAdminFlag selectFlagByAct(@Param("flagAct") String flagAct);
    
    /**
     * 查询所有用户组
     */
    List<LxAdminGroup> selectAllGroups();
    
    /**
     * 插入用户组
     */
    int insertGroup(LxAdminGroup group);
    
    /**
     * 更新用户组
     */
    int updateGroup(LxAdminGroup group);
    
    /**
     * 删除用户组
     */
    int deleteGroup(@Param("id") Integer id);
}

